/*
 * @Author: Erwin
 * @Date: 2022-04-26 13:01:30
 * @LastEditors: Erwin
 * @LastEditTime: 2022-04-26 13:11:53
 * @Description: 面向工具链的路由生成处理工具，对“vite-plugin-pages”库的扩展
 */

/**
 * 合并最后两级路径
 * @param routerPath
 * @returns routerPath
 */
const mergeRouterPath = (routerPath: string): string => {
	if (!routerPath.length) return routerPath

	// 路径处理结果
	let fixRouterPath = ''
	// 用于处理的路径元素
	const pathArr = routerPath.split('/')

	fixRouterPath = pathArr
		// 清除路径数组的空字符串
		.filter((path: string): boolean => {
			return !!path.length
		})
		// NOTE: 和文件夹同名的也视为索引，同插件的index索引（https://github.com/hannoeru/vite-plugin-pages#index-routes）
		// 如果最后两级路径相同，则合并最后两级路径
		.reduce(
			(
				path: string,
				currentPath: string,
				index: number,
				pathArr: Array<string>
			): string => {
				// 相对于当前元素的上一个元素
				const previousPath: string | undefined = pathArr[index - 1]
				if (currentPath === previousPath) {
					return path
				} else {
					return path.concat(`/${currentPath}`)
				}
			},
			''
		)

	return fixRouterPath
}

export { mergeRouterPath }
